﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SquareColorController : MonoBehaviour
{
    // 获取6种颜色的材质球
    public Material red;
    public Material green;
    public Material yellow;
    public Material blue;
    public Material orange;
    public Material allColor;

    // 材质数组 储存五种材质
    private Material[] mates;

    // 记录方块是否有颜色
    bool hasColor = false;

    // 记录已随机出来的材质
    int[] indexArr = new int[54];

    RandomPropController RPCtrl;
    void OnEnable()
    {
        // 初始化并赋值材质数组
        mates = new Material[5] { red, green, yellow, blue, orange };
        RPCtrl = GetComponent<RandomPropController>();
    }

    int count = 5;
    void Update()
    {

    }

    #region 判断是否有颜色
    /// <summary>
    /// 判断点击面是否有颜色 返回一个bool值 返回true为有颜色
    /// </summary>
    /// <param name="cover">点击面的GameObject</param>
    /// <param name="step">剩余的步数</param>
    /// <returns></returns>
    public bool HasColor(GameObject cover, int step)
    {
        // 当可用步数不为0时 判断是否有颜色
        if (step > 0)
        {
            // 获取被点击的面的材质
            Material c = cover.GetComponent<MeshRenderer>().sharedMaterial;
            // 当材质为allColor时 改变颜色 反之不改
            if (c != allColor)
            {
                hasColor = true;
            }
            else
            {
                hasColor = false;
            }
        }
        // 当步数为0时 所有块都可以走
        else
        {
            hasColor = false;
        }

        return hasColor;
    }
    #endregion

    #region 改变方块颜色
    public void ChangeColor(GameObject cover)
    {
        // 获取传入面的材质
        MeshRenderer mr = cover.GetComponent<MeshRenderer>();
        // 为传入面赋随机材质
        mr.sharedMaterial = RandomMate();
    }
    #endregion


    // 随机颜色
    Material RandomMate()
    {
        // 随机一个下标
        int index = Random.Range(0, 5);
        // 定义一个材质 接收随机出来的材质
        Material mate = mates[index];
        return mate;
    }
}
